<template>
  <UploadExcel :on-success="success" />
</template>

<script>
import { importEmployee } from '@/api/employees'
export default {
  methods: {
    formatDate(numb, format) {
      const time = new Date((numb - 1) * 24 * 3600000 + 1)
      time.setYear(time.getFullYear() - 70)
      const year = time.getFullYear() + ''
      const month = time.getMonth() + 1 + ''
      const date = time.getDate() - 1 + ''
      if (format && format.length === 1) {
        return year + format + month + format + date
      }
      return year + (month < 10 ? '0' + month : month) + (date < 10 ? '0' + date : date)
    },
    async success({ header, results }) {
      // 1. 这里是 excel 被导入解析成功的时候触发
      try {
        // 如果给 excel 加上了第一行的英文表头
        // 就可以无需转换,直接导入
        results.shift()
        console.log(results)
        // 将日期转成合适的格式, 先用封装好的方法, 转换日期字符串
        // 再放入new Date() 生成日期对象

        // 2. 因为 excel 导入插件处理时间是非常奇怪的一串数字
        // 遍历每个人, 对每个人的入职时间和转正时间都做了转换, 变成标准的日起对象
        const newResult = results.map(item => {
          item.timeOfEntry = new Date(this.formatDate(item.timeOfEntry, '/'))
          item.correctionTime = new Date(this.formatDate(item.correctionTime, '/'))
          return item
        })

        console.log(newResult)

        // 发送请求
        // 3. 数据准备完了, 就发送请求和后续的处理
        await importEmployee(newResult)

        this.$message.success('上传成功')

        this.$router.back()
      } catch (error) {
        console.log(error)
      }
    }
    // success({ header, results }) {
    //   // 这个函数是上传完excel文件
    //   // 解析完毕时的回调, 得到一个结果数据对象
    //   // 里面有 header 是表头
    //   // results 每个用户对象组成测数组
    //   // console.log(data)
    //   // 可以解构

    //   // 后端需要发送 api 时的格式
    //   // 就是每个用户对象组成的数组

    //   // 其中前后端的区别在于, 字段名
    //   // excel 使用 中文, 后端要求英文
    //   // 我们在中间需要处理

    //   // 1. 准备翻译字典
    //   const userRelations = {
    //     '入职日期': 'timeOfEntry',
    //     '手机号': 'mobile',
    //     '姓名': 'username',
    //     '转正日期': 'correctionTime',
    //     '工号': 'workNumber'
    //   }

    //   // 2. 第一层遍历, 遍历每一个员工, 拿出员工对象进行处理
    //   // 创建一个空的数组, 存放英文key 的用户数据
    //   const arr = []
    //   results.forEach(item => {
    //     console.log('遍历到一个人')
    //     console.log(item)
    //     // 每个 item 都是一个人, 第二层遍历这个用户对象所有属性遍历翻译成英文
    //     // 这个人本身资料时中文key, 用一个新对象储存英文 key 格式
    //     const userInfo = {}
    //     for (const key in item) {
    //       console.log('遍历到人的一个属性')
    //       console.log(key)
    //       const newKey = userRelations[key]
    //       const value = item[key]
    //       userInfo[newKey] = value
    //       console.log('当前 key 的 英文版存起来')
    //       console.log(newKey)
    //     }
    //     // 现在 userInfo 就是同一个人, 以 英文 key 做属性名的对象
    //     console.log('转完一个人')
    //     console.log(userInfo)
    //     arr.push(userInfo)
    //   })

    //   console.log(results)
    //   console.log(arr)
    // }
  }
}
</script>

<style>

</style>
